﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Timetabling.Core
{
    /// <summary>
    /// Clase que contendrá las propiedades de un centro
    /// </summary>
    public class Center
    {
        #region Estado

        #region variables miebro
        
        //variable miembro privada (van las variables miembro con minuscula y las propiedades en mayuscula)
        private IList<Classroom> classrooms = null;
        private IList<Schedule> schedules = null;
        private IList<Availability> availabilitys = null;
        #endregion

        /// <summary>
        /// Identificador del centro
        /// </summary>
        public Guid Id { get; set; }
        /// <summary>
        /// Nombre del centro
        /// </summary>
        public String Name { get; set; }
        /// <summary>
        /// Cif del centro
        /// </summary>
        public String CIF { get; set; }
        /// <summary>
        /// Dirección  del centro
        /// </summary>
        public String Address { get; set; }
        /// <summary>
        /// Ciudad  del centro
        /// </summary>
        public String City { get; set; }
        /// <summary>
        /// Telefono del centro
        /// </summary>
        public String Phone { get; set; }
        /// <summary>
        /// Email del centro
        /// </summary>
        public String Email { get; set; }
        /// <summary>
        /// Listado de clases
        /// </summary>
        public IList<Classroom> Classrooms
        {
            get {
                if (classrooms == null) 
                {
                    classrooms = new List<Classroom>();
                }
                return classrooms;
        }
            set {
                classrooms = value; //como se ha instaciado antes te devuelve una lista vacia, sino te devolvería null y lo hacemos así
                //para así no perder espacio en memoria iniciandolo antes, xq si no lo usamos y lo inciamos perdemos memoria
            }
        }
        /// <summary>
        /// Horarios
        /// </summary>
        public IList<Schedule> Schedules
        {
            get
            {
                if (schedules == null)
                {
                    schedules = new List<Schedule>();
                }
                return schedules;
            }
            set
            {
                schedules = value; //como se ha instaciado antes te devuelve una lista vacia, sino te devolvería null y lo hacemos así
                //para así no perder espacio en memoria iniciandolo antes, xq si no lo usamos y lo inciamos perdemos memoria
            }
        }
        /// <summary>
        /// Disponibilidad
        /// </summary>
        public IList<Availability> Availability {
            get {
                if (availabilitys == null) {
                    availabilitys = new List<Availability>();
                }
                return availabilitys;
            }
            set {
                availabilitys = value;
            }
        }
      
        #endregion
    }
}
